﻿#region 命名空间

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Sharp.Infrastructure;
using Sharp.DataTransferObject;
using Sharp.Infrastructure.Interfaces;

#endregion

namespace Sharp.DataTransferObject
{
    /// <summary>
    /// 用户
    /// </summary>
    public partial class UserDTO : IDTO
    {
        public UserDTO()
        {
            Profile = new UserProfileDTO();
        }
        /// <summary>
        /// 主键
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        ///     获取或设置当前客户的用户名。
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        ///     获取或设置当前客户的登录密码。
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        ///     获取或设置当前客户的电子邮件地址。
        /// </summary>
        public string Email { get; set; }


        /// <summary>
        ///     获取或设置用户账户最后一次登录的时间。
        /// </summary>
        public DateTime? LastLogonTime { get; set; }
        /// <summary>
        /// 最后登录Ip
        /// </summary>
        public string LastLogonIp { get; set; }



        /// <summary>
        /// 权限
        /// </summary>
        public List<PermissionDTO> Permissions { get; set; }
        /// <summary>
        /// 用户组
        /// </summary>
        public List<UserGroupDTO> UserGroups { get; set; }

        /// <summary>
        /// 用户组Id
        /// </summary>
        public IEnumerable<Guid> UserGroupIds { get; set; }

        /// <summary>
        /// 说明
        /// </summary>
        public string Comment { get; set; }
        /// <summary>
        /// 访问代码
        /// </summary>
        public string AccessCode { get; set; }
        /// <summary>
        /// 是否审核
        /// </summary>
        public bool IsApproved { get; set; }
        /// <summary>
        /// 获取一个值，该值指示成员资格用户是否因被锁定而无法进行验证。
        /// </summary>
        public bool IsLockedOut { get; set; }
        public string PasswordQuestion { get; set; }
        /// <summary>
        /// 获取或设置用户账户注册的时间。
        /// </summary>
        public DateTime RegisteredTime { get; set; }

        public UserProfileDTO Profile { get; set; }
        public string SystemCode { get; set; }
    }
}